/* 判断一个字符串是否由子串构成 */
#include <iostream>
#include <string.h>
using namespace std;

bool repeatedSubstring(string str) 
{ 
    if(str.empty())
    {
        cout << "ERROR" << endl;
        exit(-1);
    }
    
    int len = str.length();

    /* 将string转换成字符数组 */
	char Str_array[len + 1]; 
	strcpy(Str_array, str.c_str());         //string转const char*,再copy给char *字符数组

    for(int i = 1; i <= len / 2; i++)
    {
        if(len % i == 0)                    //能整除i
        {
            bool match = true;              // 假设匹配，使用match变量跟踪是否所有字符都匹配
            for(int j = 0; j < len - i; j++)
            {
                //if (Str_array[j] != Str_array[j % i]) // 检查是否相等
                if(Str_array[j] != Str_array[j + i])    // 一旦有不相等的就false
                {
                    match  = false;         // 这个时候一定不能直接return,要用match去接
                    break;
                }
            }
            if(match)                       // 满足以上条件
                return true;
        }
        
    }   
    return false;
}

int main()
{
    while(1)
    {
        string str;
        cout << "请输入字符串：";
        cin >> str;
        
        if(repeatedSubstring(str))
        {
            cout << "True" << endl;
        }
        else
        {
            cout << "False" << endl;
        }
    }

    return 0;
}